[アップデート] AWS SecretsManagerで複数のシークレットを同時に取得できるようになりました #AWSreinvent
こんにちは。CX事業本部のakkyです。
RDSのパスワードなど、シークレットの管理などにはSecretsManagerを使うのが便利ですが、API経由で値を取得する際に複数のシークレットを同時に取得できるようにアップデートされました。
aws-sdk-js-v3もつい1時間ほど前にアップデートされ、様々なアップデートと共にこの機能に対応しました。
https://github.com/aws/aws-sdk-js-v3/releases/tag/v3.458.0
私は普段はPythonを使うことが多いので、boto3も更新されていないかを確かめてみたのですが、11/27 15時の段階ではまだアップデートはないようです。とはいえしばらくすれば対応されると思います。
→つい先ほどのアップデートで対応したようです!
それでは、早速この機能を試してみましたので、ご紹介します。
やってみた
まず、マネジメントコンソールでSecretsManagerを開き、2つのシークレットを登録してみました。
次にnodejsで新たなプロジェクトを作り、npmでaws-sdk v3の3.458.0とtypescriptをインストールしました。
"@aws-sdk/client-secrets-manager": "^3.458.0",
コードはTypescriptで記述しました。test1とtest2という2つのシークレットを名前で検索してみます。
import { SecretsManager } from "@aws-sdk/client-secrets-manager"; const secretsmanager = new SecretsManager({ region: "ap-northeast-1" }); (async function () { // const secrets_list = await secretsmanager.listSecrets({}); // console.log(secrets_list); const secrets = await secretsmanager.batchGetSecretValue({ Filters: [{ Key: "name", Values: ["test1", "test2"] } ] }); console.log(secrets); })();
こちらのコードを実行すると、2つのシークレットが表示されることを確認できました!(結果は一部マスクしています)
{ '$metadata': { httpStatusCode: 200, requestId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', extendedRequestId: undefined, cfId: undefined, attempts: 1, totalRetryDelay: 0 }, Errors: [], SecretValues: [ { ARN: 'arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:test2-XXXXXX', CreatedDate: 2023-11-27TXX:XX:XX.XXXXZ, Name: 'test2', SecretString: '{"password":"9876"}', VersionId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', VersionStages: [Array] }, { ARN: 'arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:test1-XXXXXX', CreatedDate: 2023-11-27TXX:XX:XX.XXXXZ, Name: 'test1', SecretString: '{"password":"123456"}', VersionId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', VersionStages: [Array] } ] }